/**
 * @param {number[]} nums
 * @param {number} threshold
 * @return {number}
 */
var longestAlternatingSubarray = function (nums, threshold) {
  // cur；游标，startpos：子数组开始的下标
  let cur = 0, startpos = -1
  let len = 0, maxLen = 0
  while (cur < nums.length) {
    // 不存在子数组下标，更新子数组下标
    if (nums[cur] % 2 == 0 && nums[cur] <= threshold && startpos == -1) {
      startpos = cur
      len++
    } else if (startpos != -1) {  // 存在子数组下标开始计数
      // 符合条件的两种情况，长度+1
      if ((cur - startpos) % 2 == 1 && nums[cur] % 2 == 1 && nums[cur] <= threshold) {
        len++
      } else if ((cur - startpos) % 2 == 0 && nums[cur] % 2 == 0 && nums[cur] <= threshold) {
        len++
      } else {
        // 不满足的情况
        if (len > maxLen) {
          maxLen = len
        }
        if (nums[cur] % 2 == nums[cur - 1] % 2 && nums[cur] % 2 == 0 && nums[cur] <= threshold) {
          startpos = cur
          len = 1
        } else {
          startpos = -1
          len = 0
        }
      }
    }
    cur++
  }
  return maxLen > len ? maxLen : len
}
/**
 * 不满足的情况：
 * 1.结尾奇奇
 *   1.1.奇奇最后一个大于threshhold
 *   1.2.奇奇最后一个小于threshhold
 * 2.偶偶
 *   2.1.偶偶最后一个大于threshhold
 *   2.2.偶偶最后一个小于threshhold 更新startpos为i
 * 3.奇偶/偶奇，最后一个大于threshhold 
 */
// console.log(longestAlternatingSubarray([3, 2, 5, 4], 5))
// console.log(longestAlternatingSubarray([2, 10, 5], 7))
console.log(longestAlternatingSubarray([2, 2, 3, 4, 5], 5))